package Border;

import be.kuleuven.cs.som.annotate.Immutable;
import be.kuleuven.cs.som.annotate.Raw;
import SquarePackage.Direction;
import SquarePackage.Square;

/**
 * Class for the walls in the dungeon.
 * 
 * @author 	Brecht Reynders and Florian Hendrickx
 * @version	1.0
 */
public class Wall extends NonEmptySpace {
	
	
	/**
	 * Initialize a new wall with an identifying border, a slipperyness and a direction.
	 * @param	direction
	 * 			the direction in which the wall is created
	 * @param	Square
	 * 			the identifying square kept in as the walls identifier
	 * @param 	slippery
	 * 			The slipperiness of the new wall.
	 */
	public Wall(Square square, Direction direction, boolean slippery){
		this(square,null,direction,slippery);
	}
	/**
	 * extended constructor
	 */
	public Wall(Square square1, Square square2, Direction direction, boolean isSlippery){
		super(square1,square2,direction,isSlippery);

	}
	/**
	 * smallest constructor possible(default slippery is false.
	 */
	public Wall(Square square, Direction direction){
		this(square,direction,false);
	}
	
	/**
	 * Return whether this border is isolated.
	 */
	@Raw @Immutable
	public boolean getIsolation(){
		return true;
	}
	/**
	 * returns which of the borders is prefered and will not be removed
	 */
	@Raw
	public Border getHighest(Border border){
		return this;
	}
}